package router

import "github.com/emicklei/go-restful/v3"

const (
	kafkaApiVersion = "v1"
)

//type resourceIDs struct {
//	tenantID        string
//	clusterID       entity.ID
//	proxyID         entity.ID
//	instanceID      string
//	proxyInstanceID string
//	topicID         entity.ID
//	topicName       string
//	groupID         entity.ID
//	groupName       string
//}
//
//var paramsSlice = []string{
//	"tenantID", "instanceID", "clusterID", "topicID", "topicName", "groupID", "groupName",
//	"proxyID", "proxyInstanceID",
//}
//
//func getResourceID(request *restful.Request) (*resourceIDs, error) {
//	var resourceIDs resourceIDs
//	var err error
//
//	for _, k := range paramsSlice {
//		v := request.QueryParameter(k)
//		switch k {
//		case "tenantID":
//			resourceIDs.tenantID = v
//		case "instanceID":
//			resourceIDs.instanceID = v
//		case "clusterID":
//			if v != "" {
//				resourceIDs.clusterID, err = entity.ParseID(v)
//				if err != nil {
//					return &resourceIDs, err
//				}
//			}
//		case "proxyInstanceID":
//			resourceIDs.proxyInstanceID = v
//		case "proxyID":
//			if v != "" {
//				resourceIDs.proxyID, err = entity.ParseID(v)
//				if err != nil {
//					return &resourceIDs, err
//				}
//			}
//		case "topicID":
//			if v != "" {
//				resourceIDs.topicID, err = entity.ParseID(v)
//				if err != nil {
//					return &resourceIDs, err
//				}
//			}
//		case "topicName":
//			resourceIDs.topicName = v
//		case "groupID":
//			if v != "" {
//				resourceIDs.groupID, err = entity.ParseID(v)
//				if err != nil {
//					return nil, err
//				}
//			}
//		case "groupName":
//			resourceIDs.groupName = v
//		default:
//			logs.Warn().Str("param", k).Str("value", v).Msg("unknown path parameters")
//		}
//	}
//
//	resourceIDs.tenantID = entity.GetTenantID(request)
//	return &resourceIDs, nil
//}
//
//func setRequestProxy(request *restful.Request, cluster *kafka.Proxy) {
//	request.SetAttribute("proxy", cluster)
//}
//
//func getRequestProxy(request *restful.Request) (*kafka.Proxy, error) {
//	attribute := request.Attribute("proxy")
//	if attribute == nil {
//		return nil, errors.New("no cluster attribute")
//	}
//
//	cluster, ok := attribute.(*kafka.Proxy)
//	if !ok {
//		return nil, errors.New("attribute is not *kafka.cluster")
//	}
//	return cluster, nil
//}
//
//func setRequestCluster(request *restful.Request, cluster *kafka.Cluster) {
//	request.SetAttribute("cluster", cluster)
//}
//
//func getRequestCluster(request *restful.Request) (*kafka.Cluster, error) {
//	attribute := request.Attribute("cluster")
//	if attribute == nil {
//		return nil, errors.New("no cluster attribute")
//	}
//
//	cluster, ok := attribute.(*kafka.Cluster)
//	if !ok {
//		return nil, errors.New("attribute is not *kafka.cluster")
//	}
//	return cluster, nil
//}
//
//func setRequestTopic(request *restful.Request, topic *kafka.Topic) {
//	request.SetAttribute("topic", topic)
//}
//
//func getRequestTopic(request *restful.Request) (*kafka.Topic, error) {
//	attribute := request.Attribute("topic")
//	if attribute == nil {
//		return nil, errors.New("no topic attribute")
//	}
//
//	cluster, ok := attribute.(*kafka.Topic)
//	if !ok {
//		return nil, errors.New("attribute is not *kafka.topic")
//	}
//	return cluster, nil
//}
//
//func getRequestTopicName(request *restful.Request) string {
//	topicName := request.QueryParameter("searchName")
//	return topicName
//}
//func getRequestGroupName(request *restful.Request) string {
//	groupName := request.QueryParameter("searchName")
//	return groupName
//}
//func getRequestSearchName(request *restful.Request) (name string, searchClass int) {
//	clusterName := request.QueryParameter("searchName")
//	clusterResourceClass := request.QueryParameter("searchResourceClass")
//	clusterState := request.QueryParameter("searchState")
//	clusterInstanceID := request.QueryParameter("searchInstanceID")
//	if len(clusterName) != 0 {
//		return clusterName, 1
//	}
//	if len(clusterResourceClass) != 0 {
//		return clusterResourceClass, 2
//	}
//	if len(clusterState) != 0 {
//		return clusterState, 3
//	}
//	if len(clusterInstanceID) != 0 {
//		return clusterInstanceID, 4
//	}
//	return "", 0
//}
//func setRequestConsumerGroupDescription(request *restful.Request, groupDesc *kafka.ConsumerGroup) {
//	request.SetAttribute("groupDesc", groupDesc)
//}
//
//func getRequestConsumerGroupDescription(request *restful.Request) (*kafka.ConsumerGroup, error) {
//	attribute := request.Attribute("groupDesc")
//	if attribute == nil {
//		return nil, errors.New("no consumerGroup attribute")
//	}
//
//	groupDesc, ok := attribute.(*kafka.ConsumerGroup)
//	if !ok {
//		return nil, errors.New("attribute is not *sarama.GroupDescription")
//	}
//	return groupDesc, nil
//}
//
//func resourceIDParameter(ws *restful.WebService, resource string) *restful.Parameter {
//	var p *restful.Parameter
//	switch resource {
//	case "cluster":
//		p = ws.QueryParameter("clusterID", "集群ID")
//	case "instance":
//		p = ws.QueryParameter("instanceID", "实例ID")
//	case "proxy":
//		p = ws.QueryParameter("proxyID", "集群Proxy代理ID")
//	case "proxyInstance":
//		p = ws.QueryParameter("proxyInstanceID", "Proxy代理实例ID")
//	case "topic":
//		p = ws.QueryParameter("topicID", "主题ID")
//	/*case "topicName":
//	p = ws.QueryParameter("topicName", "主题名")*/
//	case "groupName":
//		p = ws.QueryParameter("groupName", "消费组名")
//	case "message":
//		p = ws.QueryParameter("messageID", "消息ID")
//	default:
//		p = ws.QueryParameter("unknown_id", "未知ID")
//
//	}
//	return p.DataType("string").DefaultValue("").Required(true)
//}
//func listTopicWithTopicNameParam(ws *restful.WebService, searchName string) *restful.Parameter {
//	var p *restful.Parameter
//	p = ws.QueryParameter(searchName, "主题名")
//	return p.DataType("string").DefaultValue("")
//}
//func listGroupWithGroupNameParam(ws *restful.WebService, searchName string) *restful.Parameter {
//	var p *restful.Parameter
//	p = ws.QueryParameter(searchName, "消费组名")
//	return p.DataType("string").DefaultValue("")
//}
//
//func listProxyWithProxyNameParam(ws *restful.WebService, searchCluster string) *restful.Parameter {
//	var p *restful.Parameter
//	switch searchCluster {
//	case "searchName":
//		p = ws.QueryParameter("proxyName", "集群proxy名")
//	case "searchResourceClass":
//		p = ws.QueryParameter("proxyResourceClass", "版本")
//	case "searchState":
//		p = ws.QueryParameter("proxyState", "集群proxy状态")
//	}
//	return p.DataType("string").DefaultValue("")
//}
//
//func listClusterWithClusterNameParam(ws *restful.WebService, searchCluster string) *restful.Parameter {
//	var p *restful.Parameter
//	switch searchCluster {
//	case "searchName":
//		p = ws.QueryParameter("proxyName", "集群proxy名")
//	case "searchResourceClass":
//		p = ws.QueryParameter("proxyResourceClass", "版本")
//	case "searchState":
//		p = ws.QueryParameter("proxyState", "集群proxy状态")
//	}
//	return p.DataType("string").DefaultValue("")
//}
//func listClusterWithGrepParam(ws *restful.WebService, searchCluster string) *restful.Parameter {
//	var p *restful.Parameter
//	switch searchCluster {
//	case "searchName":
//		p = ws.QueryParameter("searchName", "集群名")
//	case "searchResourceClass":
//		p = ws.QueryParameter("searchResourceClass", "版本")
//	case "searchState":
//		p = ws.QueryParameter("searchState", "集群状态")
//	case "searchInstanceID":
//		p = ws.QueryParameter("searchInstanceID", "实例ID")
//	}
//	return p.DataType("string").DefaultValue("")
//}
//func curPageParameter(ws *restful.WebService) *restful.Parameter {
//	return ws.QueryParameter("pageNum", "当前页").DataType("uint64").DefaultValue("1")
//}
//
//func pageSizeParameter(ws *restful.WebService) *restful.Parameter {
//	return ws.QueryParameter("pageSize", "页大小").DataType("uint64").DefaultValue("20")
//}

func checkStateParam(ws *restful.WebService, param string) *restful.Parameter {
	var p *restful.Parameter
	switch param {
	case "instanceId":
		p = ws.QueryParameter("instanceId", "实例名字")
	case "tenantId":
		p = ws.QueryParameter("tenantId", "租户名")

	}
	return p.DataType("string").DefaultValue("")
}
